#include "misc.h"

#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_tim.h"


#include "common.h"
#include "systick.h"

#include "delay.h"

#define DELAY_COUNT 6
// void delay_us(u32 x)
// {
// 	u32 i = DELAY_COUNT;
// 	//��Լ999.3us STM32 72MHz    
// 	/*
// 		i = 1000	83.68us  
// 		i = 11.9     
// 		i = 12 		1.34us   
// 		i = 11		1.25us  
// 		i = 10		1.17us
// 		i = 8 		1.22us
// 		i = 5		0.93us
// 		i = 6		1.03us
// 	*/
	
// 	while(x--)
// 	{
// 		//�Ȳ���һ��������Ȼ�������㣬��ʵѭ���Ĵ���=MDK���Ե�ʱ�䣨ת����us��/����ѭ������
// 		//�磺x=1/[(0.00025512-0.00017144)*1000000/1000]=1024   
// 		while(i--);
// 		i = DELAY_COUNT;
// 	}
// }

// void delay_ms(u32 x)
// {
// 	while(x--)
// 	{
// 		delay_us(1000);
// 	}
// }

// void delay_s(u32 x)
// {
// 	while(x--)
// 	{
// 		delay_ms(1000);
// 	}
// }
/*

*/
// #define DELAY_COUNT 6
void delay_us(u32 x)
{
#ifdef DELAY_WAY 
	systick_delay_us(x);
#else
	u32 i = DELAY_COUNT;
	//大约999.3us STM32 72MHz    
	/*
		i = 1000	83.68us  
		i = 11.9     
		i = 12 		1.34us   
		i = 11		1.25us  
		i = 10		1.17us
		i = 8 		1.22us
		i = 5		0.93us
		i = 6		1.03us
	*/
	
	while(x--)
	{
		//先测试一个整数，然后大体计算，真实循环的次数=MDK测试的时间（转换成us）/测试循环数，
		//如：x=1/[(0.00025512-0.00017144)*1000000/1000]=1024   
		while(i--);
		i = DELAY_COUNT;
	}
#endif
}

void delay_ms(u32 x)
{
#ifdef DELAY_WAY 
	systick_delay_ms(x);
#else
	while(x--)
	{
		delay_us(1000);
	}
#endif
}

void delay_s(u32 x)
{
	while(x--)
	{
		delay_ms(1000);
	}
}
